CC      = g++
CCDEBUG = g++ -g
CFLAGS  = -w -Wall -pedantic-errors
LDFLAGS = -lmingw32 -lSDLmain -lSDL_image -lSDL

all: test.exe
 
debug: test_debug.exe

test.exe: CApp.o CApp_OnInit.o CApp_OnEvent.o CApp_OnLoop.o CApp_OnRender.o CApp_OnCleanup.o CSurface.o CEvent.o CAnimation.o CEntity.o CTile.o CMap.o CArea.o CCamera.o CFPS.o CPlayer.o CEntityCol.o Goomba.o
	$(CC) -o $@ $^ $(LDFLAGS)
	
test_debug.exe: CApp.o CApp_OnInit.o CApp_OnEvent.o CApp_OnLoop.o CApp_OnRender.o CApp_OnCleanup.o CSurface.o CEvent.o CAnimation.o CEntity.o CTile.o CMap.o CArea.o CCamera.o CFPS.o CPlayer.o CEntityCol.o Goomba.o
	$(CCDEBUG) -o $@ $^ $(LDFLAGS)	

CApp.o: CApp.cpp CApp.h Define.h
	$(CC) -c $(CFLAGS) $<

CApp_OnInit.o: CApp_OnInit.cpp CApp.h
	$(CC) -c $(CFLAGS) $<
    
CApp_OnEvent.o: CApp_OnEvent.cpp CApp.h
	$(CC) -c $(CFLAGS) $<

CApp_OnLoop.o: CApp_OnLoop.cpp CApp.h
	$(CC) -c $(CFLAGS) $<

CApp_OnRender.o: CApp_OnRender.cpp CApp.h
	$(CC) -c $(CFLAGS) $<    
    
CApp_OnCleanup.o: CApp_OnCleanup.cpp CApp.h
	$(CC) -c $(CFLAGS) $<       

CSurface.o: CSurface.cpp CSurface.h
	$(CC) -c $(CFLAGS) $<

CEvent.o: CEvent.cpp CEvent.h
	$(CC) -c $(CFLAGS) $<
    
CAnimation.o: CAnimation.cpp CAnimation.h
	$(CC) -c $(CFLAGS) $<
    
CEntity.o: CEntity.cpp CEntity.h
	$(CC) -c $(CFLAGS) $<

CTile.o: CTile.cpp CTile.h Define.h
	$(CC) -c $(CFLAGS) $<
    
CMap.o: CMap.cpp CMap.h Define.h
	$(CC) -c $(CFLAGS) $<
    
CArea.o: CArea.cpp CArea.h Define.h
	$(CC) -c $(CFLAGS) $<
    
CCamera.o: CCamera.cpp CCamera.h
	$(CC) -c $(CFLAGS) $<
    
CFPS.o: CFPS.cpp CFPS.h
	$(CC) -c $(CFLAGS) $<
    
CPlayer.o: CPlayer.cpp CPlayer.h
	$(CC) -c $(CFLAGS) $<
    
CEntityCol.o: CEntityCol.cpp CEntity.h
	$(CC) -c $(CFLAGS) $<      
    
Goomba.o: Goomba.cpp Goomba.h
	$(CC) -c $(CFLAGS) $<    
    
.PHONY: clean cleanest

clean:
	del *.o

cleanest: clean
	del test.exe
	del test_debug.exe